package br.com.iswe.gerador.velocity.gerador.gwt;

import br.com.iswe.gerador.velocity.gerador.GeradorGenerico;
import br.com.iswe.gerador.velocity.gerador.GeradorHandler;
import br.com.iswe.gerador.velocity.info.InfoEntidadeImpl;
import br.com.iswe.gerador.velocity.info.InfoGerador;
import br.com.iswe.gerador.velocity.patterns.GwtPattern;

public class GeradorDetalhePanelImpl extends GeradorGenerico {
	public static final String NOME_GERADOR = "geradorDetalhePanelImpl";
	private static final String GERADOR_GWT_PASTA_SAIDA = "gerador.gwt.pasta.saida";
	
	GwtPattern gwtPattern = new GwtPattern();
	
	public GeradorDetalhePanelImpl() {
		this.templateName = "GWT-DETALHE-PANEL-IMPL.vm";
		this.handler = new GeradorHandler(){
			public String getNomeArquivo(InfoEntidadeImpl infoEntidade) {
				return gwtPattern.getDetalhePanelImplName(infoEntidade) + ".java";
			}
			public String getPackageObjeto(InfoEntidadeImpl infoEntidade) {
				return gwtPattern.getPackage(infoEntidade) + ".client";
			}
			public boolean shouldGenerateFile(InfoGerador infoGerador, String arquivo) {
				return infoGerador.shouldGenerateFile(arquivo, "gwt");
			}
		};
	}
	
	@Override
	protected void doChain(GeradorGenerico geradorAnterior, InfoGerador infoGerador, InfoEntidadeImpl infoEntidade) throws Exception {
		//verifica se vai gerar toda a cadeia
		if(geradorAnterior.shouldGenereteFile()){
			super.doChain(geradorAnterior, infoGerador, infoEntidade);
		}
	}
	
	@Override
	public void inicio(InfoGerador infoGerador) {
		super.inicio(infoGerador);
		this.pastaSaida = infoGerador.getPropriedade(GERADOR_GWT_PASTA_SAIDA);
	}
}
